1. Field of the Invention
The present invention relates to digital computer systems and more particularly to database systems implemented in digital computer systems and to systems and methods for transforming database queries.
2. Description of the Related Art
Database management systems are computer-based systems that allow users to store, retrieve, search, and otherwise manage large volumes of data. One of the key advantages in maintaining a database is the ability to search the database to find data entries complying with a user-defined search criteria. This feature is accomplished with a database operation commonly known as a query. Databases typically contain large numbers of data and a given query may require a combination of information from different data records which are sometimes stored in different servers. Many databases employ specialized search engines to improve database search performance.
Many techniques have evolved to help locate data stored in databases. One of these techniques involves the launching of multiple queries on specialized search engines, then combining the result lists from the multiple queries to derive the search result.
While this technique is useful, the management of the multiple result lists from the various search engines has become a challenge, especially when the desired result is a single result list with all redundancies removed. The process of merging the results from a number of result lists can take as long as the query itself, and can result in large demands on computer resources, particularly buffer storage space.
What is needed is a search technique that allows queries to be defined and transmitted to specialized search engines, but avoids the need to merge the results from a large number of result lists. The present invention satisfies that need by presenting a method and apparatus for transforming the database query to reduce or eliminating the need to merge data. The present invention satisfies that need.
To address the requirements described above, the present invention discloses a method, apparatus, and article of manufacture for transforming a query to reduce the need for merging the results from a number of result lists.
The method comprises the steps of forming at least one subquery from the query, executing the formed subquery to generate a result list comprising a plurality of first result elements, and replacing the executed subquery with a logical combination of the first result elements to form a transformed query. In one embodiment of the invention, the query comprises a number of search terms, and the step of forming a subquery comprises the steps of scanning the query to identify search terms targeted for a search engine, tagging the identified search terms with unique identifiers, and forming the subquery from the tagged search terms. In another embodiment, the tagged search terms are those which are targeted for specialized search engines, such as those optimized for text searching or image analysis, and the tag and unique identifier associated with each search term provides an indication of the specialized search engine the search term is targeted to. In another embodiment of the invention, substitution of result elements for subqueries proceeds in cascaded fashion by combining the result elements with a remaining subquery, one at a time to generate iterated result elements. This process is completed until all subqueries in the query have been processed. In another embodiment of the invention, substitution of the result elements for subqueries proceeds in parallel.
In accordance with the foregoing, the present invention also comprises an apparatus having a means for forming at least one subquery from the query, a means for executing the formed subquery to generate a plurality of first result elements, and a means for replacing the executed subquery with a logical combination of the first result elements to form a transformed query. In another embodiment, the invention comprises a program storage device, tangibly embodying a sequence of instructions for performing the method steps described above.